COBOL এ লুপিং এবং ইটারেশন খুবই গুরুত্বপূর্ণ, কারণ এগুলোর মাধ্যমে একটি কোডের অংশ একাধিকবার পুনরাবৃত্তি করা যায়। COBOL এ বিভিন্ন ধরনের লুপিং কৌশল ব্যবহার করা যায়, যেমন PERFORM, WITH TEST AFTER, WITH TEST BEFORE, এবং VARYING। এইসব কৌশল ব্যবহৃত হয় যখন কোনো নির্দিষ্ট শর্ত পূর্ণ হলে বা নির্দিষ্ট সময় পর্যন্ত একটি কোড ব্লক বারবার এক্সিকিউট করতে হয়।
PERFORM স্টেটমেন্ট COBOL এর একটি সাধারণ লুপিং কৌশল, যা একটি নির্দিষ্ট প্রক্রিয়া বা সাবরুটিন একাধিকবার কার্যকর করতে ব্যবহৃত হয়।
PERFORM statement-name {UNTIL condition}.
PERFORM DisplayMessage UNTIL Counter = 5.
DisplayMessage.
DISPLAY 'This is message number: ' Counter.
ADD 1 TO Counter.
END-PERFORM.
এখানে, PERFORM স্টেটমেন্টটি DisplayMessage
সাবরুটিনটি ৫ বার কার্যকর করবে যতক্ষণ না Counter এর মান ৫ হবে। প্রতিটি পুনরাবৃত্তির পরে Counter এর মান ১ বাড়ানো হবে এবং মেসেজ প্রদর্শিত হবে।
COBOL এ PERFORM VARYING স্টেটমেন্টটি ব্যবহার করা হয় একটি ভেরিয়েবল মান পরিবর্তন (varying) করে লুপ চালানোর জন্য। এটি সাধারণত ইনডেক্স বা কাউন্টার ভেরিয়েবল ব্যবহারের জন্য ব্যবহৃত হয়।
PERFORM VARYING index-variable FROM start-value BY increment UNTIL end-condition
statement(s)
END-PERFORM.
PERFORM VARYING Counter FROM 1 BY 1 UNTIL Counter > 5
DISPLAY 'This is message number: ' Counter
END-PERFORM.
এখানে Counter ভেরিয়েবলটি ১ থেকে শুরু হয়ে ৫ পর্যন্ত প্রতি পুনরাবৃত্তিতে ১ করে বাড়বে, এবং প্রতিটি বার DISPLAY স্টেটমেন্টটি কার্যকর হবে।
COBOL এ WITH TEST AFTER এবং WITH TEST BEFORE ব্যবহার করা হয় লুপের শর্ত পরীক্ষা করার জন্য। এই দুটি কৌশলের মধ্যে পার্থক্য হল যে WITH TEST AFTER লুপের শর্ত পরীক্ষা করার আগে কোড ব্লকটি অন্তত একবার কার্যকর হয়, তবে WITH TEST BEFORE কোড ব্লকটি কার্যকর করার আগে শর্ত পরীক্ষা করে।
PERFORM UNTIL condition WITH TEST AFTER
statement(s)
END-PERFORM.
PERFORM UNTIL Counter > 5 WITH TEST AFTER
DISPLAY 'Counter value is: ' Counter
ADD 1 TO Counter
END-PERFORM.
এখানে প্রথমে Counter এর মান প্রদর্শিত হবে, তারপর Counter এর মান ১ বাড়ানো হবে, এবং পরবর্তী চক্রে শর্ত পরীক্ষা করা হবে।
PERFORM UNTIL condition WITH TEST BEFORE
statement(s)
END-PERFORM.
PERFORM UNTIL Counter > 5 WITH TEST BEFORE
ADD 1 TO Counter
DISPLAY 'Counter value is: ' Counter
END-PERFORM.
এখানে প্রথমে শর্ত পরীক্ষা করা হবে, তারপর Counter এর মান ১ বাড়ানো হবে এবং তারপরে মান প্রদর্শিত হবে।
EXIT WHEN স্টেটমেন্টটি লুপের মধ্যে কোনো শর্ত পূর্ণ হলে লুপটি থেকে বের হয়ে যেতে ব্যবহৃত হয়। এটি PERFORM স্টেটমেন্টের ভিতর ব্যবহার করা হয় লুপ শেষ করার জন্য।
PERFORM
statement(s)
EXIT WHEN condition
END-PERFORM.
PERFORM UNTIL Counter > 5
DISPLAY 'Counter value is: ' Counter
ADD 1 TO Counter
EXIT WHEN Counter = 3
END-PERFORM.
এখানে, লুপটি Counter এর মান ৩ হওয়ার পরেই থেমে যাবে, এবং EXIT WHEN শর্তটি পূর্ণ হলে লুপটি বন্ধ হয়ে যাবে।
COBOL এ লুপিং এবং ইটারেশন প্রোগ্রামকে আরও শক্তিশালী এবং কার্যকর করে তোলে। PERFORM, PERFORM VARYING, WITH TEST AFTER, WITH TEST BEFORE, এবং EXIT WHEN স্টেটমেন্টগুলো ব্যবহার করে আপনি কোডের পুনরাবৃত্তি কার্যকরভাবে করতে পারেন। এইসব স্টেটমেন্টের মাধ্যমে একটি নির্দিষ্ট শর্ত পূর্ণ হওয়া পর্যন্ত প্রোগ্রামের একটি অংশ একাধিকবার কার্যকর করা সম্ভব হয়, যা ডেটা প্রক্রিয়া এবং অন্যান্য অপারেশনগুলি সহজ ও দ্রুত করতে সহায়তা করে।
COBOL প্রোগ্রামিং ভাষায় PERFORM স্টেটমেন্ট একটি শক্তিশালী এবং গুরুত্বপূর্ণ নির্দেশনা, যা কোডের পুনঃব্যবহারযোগ্য অংশগুলো একসাথে গ্রুপ করতে সাহায্য করে। PERFORM স্টেটমেন্ট ব্যবহার করে একাধিক প্রোগ্রাম স্টেটমেন্ট বা একটি সেকশন বা প্যারাগ্রাফকে কার্যকর করা যায়। এটি কোডের কার্যকারিতা সংক্ষেপে এবং আরও সংগঠিতভাবে তৈরি করতে সহায়ক।
PERFORM স্টেটমেন্ট দুটি প্রধানভাবে ব্যবহৃত হয়:
PERFORM [paragraph-name] [times].
PERFORM ADDITION.
এখানে ADDITION হলো একটি প্যারাগ্রাফের নাম, যা COBOL প্রোগ্রামে অন্য কোথাও সংজ্ঞায়িত থাকবে।
Inline Perform-এ কোডের মধ্যে সোজাসুজি PERFORM স্টেটমেন্ট ব্যবহার করা হয়, যেখানে নির্দিষ্ট একটি কাজ একাধিকবার বা এককভাবে করা হয়।
PERFORM VARYING I FROM 1 BY 1 UNTIL I > 10
DISPLAY 'Number: ' I
END-PERFORM.
এখানে, PERFORM VARYING স্টেটমেন্টটি I নামক ভেরিয়েবলটি ১ থেকে ১০ পর্যন্ত বৃদ্ধি পায় এবং প্রতি বার I এর মান স্ক্রীনে প্রদর্শিত হয়।
ব্যাখ্যা:
Paragraph Perform স্টেটমেন্টে, একটি নির্দিষ্ট প্যারাগ্রাফকে কার্যকর করা হয়। এর মাধ্যমে বড় প্রোগ্রামগুলিতে কোডকে মডুলারভাবে সাজানো যায়, ফলে কোড পুনরায় ব্যবহারযোগ্য হয়ে ওঠে এবং উন্নত রক্ষণাবেক্ষণ সহজ হয়।
PERFORM PRINT-REPORT.
...
PRINT-REPORT.
DISPLAY 'Report printed.'
DISPLAY '====================='.
এখানে, PERFORM PRINT-REPORT স্টেটমেন্ট PRINT-REPORT প্যারাগ্রাফটিকে কার্যকর করবে। PRINT-REPORT প্যারাগ্রাফটি একটি নির্দিষ্ট আউটপুট প্রদর্শন করার কাজ করবে।
কোনো কোড ব্লক শর্তসাপেক্ষে কার্যকর করতে PERFORM স্টেটমেন্ট ব্যবহৃত হয়। এটি মূলত কোনো শর্ত পূর্ণ হলে নির্দিষ্ট প্যারাগ্রাফ বা কোড এক্সিকিউট করতে ব্যবহৃত হয়।
IF AGE >= 18
PERFORM PRINT-ADULT.
ELSE
PERFORM PRINT-MINOR.
END-IF.
PRINT-ADULT.
DISPLAY 'You are an adult.'
PRINT-MINOR.
DISPLAY 'You are a minor.'
এখানে, PERFORM PRINT-ADULT এবং PERFORM PRINT-MINOR স্টেটমেন্ট দুটি শর্তসাপেক্ষে কার্যকর করা হচ্ছে। যদি AGE ১৮ বা তার বেশি হয়, তবে PRINT-ADULT প্যারাগ্রাফটি কার্যকর হবে, অন্যথায় PRINT-MINOR প্যারাগ্রাফটি কার্যকর হবে।
কোনো কোড ব্লক বা প্যারাগ্রাফকে নির্দিষ্ট সংখ্যক বার চালানোর জন্য PERFORM WITH TIMES স্টেটমেন্ট ব্যবহৃত হয়।
PERFORM PRINT-NAME 5 TIMES.
...
PRINT-NAME.
DISPLAY 'Hello, User!'
এখানে, PRINT-NAME প্যারাগ্রাফটি ৫ বার কার্যকর হবে এবং প্রতিবার "Hello, User!" স্ক্রীনে প্রদর্শিত হবে।
PERFORM UNTIL স্টেটমেন্টটি শর্ত পূর্ণ না হওয়া পর্যন্ত একটি কোড স্নিপেট বা প্যারাগ্রাফ একাধিক বার কার্যকর করতে ব্যবহৃত হয়।
PERFORM UNTIL TOTAL > 100
ADD 10 TO TOTAL
END-PERFORM.
এখানে, TOTAL এর মান ১০০ এর বেশি না হওয়া পর্যন্ত PERFORM UNTIL ব্লকটি চালানো হবে এবং TOTAL এর মান ১০ প্রতি বার বাড়ানো হবে।
PERFORM স্টেটমেন্ট COBOL প্রোগ্রামিংয়ে কোডের পুনঃব্যবহারযোগ্যতা এবং সংগঠন বৃদ্ধি করতে সাহায্য করে। এটি কোডের কার্যকারিতা সংক্ষেপে এবং আরও মডুলারভাবে তৈরি করতে সহায়ক, যা বড় প্রোগ্রামগুলির রক্ষণাবেক্ষণ এবং উন্নতির ক্ষেত্রে গুরুত্বপূর্ণ। PERFORM স্টেটমেন্ট বিভিন্ন ধরনের শর্ত, ইনলাইন কোড, প্যারাগ্রাফ কল, বা বার বার কোড চালানোর জন্য ব্যবহৃত হতে পারে।
PERFORM UNTIL
এবং PERFORM TIMES
এর ব্যবহারCOBOL ভাষায় PERFORM UNTIL
এবং PERFORM TIMES
হল দুটি গুরুত্বপূর্ণ লুপিং স্টেটমেন্ট যা নির্দিষ্ট শর্ত পূর্ণ না হওয়া বা নির্দিষ্ট সংখ্যক বার একটি ব্লক কোড রান করানোর জন্য ব্যবহৃত হয়। এই দুটি স্টেটমেন্টের মধ্যে প্রধান পার্থক্য হল, একটিতে শর্তের উপর ভিত্তি করে লুপ চালানো হয় এবং অন্যটিতে নির্দিষ্ট সংখ্যক বার লুপ চালানো হয়।
PERFORM UNTIL
(শর্ত অনুযায়ী লুপ)PERFORM UNTIL
একটি লুপ স্টেটমেন্ট যা তখন পর্যন্ত চলতে থাকে যতক্ষণ না নির্দিষ্ট শর্ত পূর্ণ হয়। এটি মূলত ব্যবহার করা হয় যখন লুপের জন্য একটি শর্ত থাকতে হয়, যা লুপ বন্ধ করার জন্য সত্য (True) হতে হবে।
PERFORM statement UNTIL condition
statement
: যেকোনো COBOL কমান্ড বা ব্লক।condition
: সেই শর্ত যা পূর্ণ না হওয়া পর্যন্ত লুপ চলতে থাকবে।01 COUNTER PIC 99 VALUE 1.
PROCEDURE DIVISION.
PERFORM UNTIL COUNTER > 5
DISPLAY 'Counter value: ' COUNTER
ADD 1 TO COUNTER
END-PERFORM.
STOP RUN.
ব্যাখ্যা:
COUNTER
এর মান ১ থেকে শুরু হয়ে ৫ পর্যন্ত বৃদ্ধি পাবে এবং প্রতি লুপে তার মান প্রদর্শন হবে।PERFORM UNTIL COUNTER > 5
এর মানে হলো, যতক্ষণ না COUNTER
এর মান ৫ এর বেশি হয়, ততক্ষণ লুপ চলতে থাকবে।COUNTER
এর মান ১ করে বাড়ানো হবে।PERFORM TIMES
(নির্দিষ্ট সংখ্যক বার লুপ)PERFORM TIMES
একটি লুপ স্টেটমেন্ট যা নির্দিষ্ট সংখ্যক বার একটি কোড ব্লক চালানোর জন্য ব্যবহৃত হয়। এটি সাধারণত সেই পরিস্থিতিতে ব্যবহৃত হয় যখন আপনাকে একটি নির্দিষ্ট সংখ্যা জানিয়ে লুপ চালাতে হয়।
PERFORM statement TIMES number
statement
: যেকোনো COBOL কমান্ড বা ব্লক।number
: লুপ কতবার চলবে তার সংখ্যা।01 COUNTER PIC 99 VALUE 1.
PROCEDURE DIVISION.
PERFORM 5 TIMES
DISPLAY 'Counter value: ' COUNTER
ADD 1 TO COUNTER
END-PERFORM.
STOP RUN.
ব্যাখ্যা:
COUNTER
৫ বার প্রদর্শিত হবে, এবং প্রতি বার লুপে তার মান ১ করে বাড়ানো হবে।PERFORM 5 TIMES
এর মানে হলো, কোডটি ৫ বার চলবে।PERFORM UNTIL
এবং PERFORM TIMES
এর মধ্যে পার্থক্যবৈশিষ্ট্য | PERFORM UNTIL | PERFORM TIMES |
---|---|---|
ব্যবহার | শর্ত অনুযায়ী লুপ চালানো | নির্দিষ্ট সংখ্যক বার লুপ চালানো |
শর্ত | লুপ চলতে থাকবে যতক্ষণ না শর্ত পূর্ণ হয় | লুপ নির্দিষ্ট সংখ্যক বার চলবে |
শেষ হওয়া | যখন শর্ত পূর্ণ হয় তখন লুপ বন্ধ হবে | নির্দিষ্ট সংখ্যক বার লুপ চলবে, তারপর বন্ধ হবে |
প্রধান উদাহরণ | PERFORM UNTIL COUNTER > 5 | PERFORM 5 TIMES |
PERFORM UNTIL
এবং PERFORM TIMES
এর আরও উদাহরণPERFORM UNTIL
উদাহরণ:01 NUMBER PIC 99 VALUE 0.
PROCEDURE DIVISION.
PERFORM UNTIL NUMBER = 10
ADD 1 TO NUMBER
DISPLAY 'Number is: ' NUMBER
END-PERFORM.
STOP RUN.
ব্যাখ্যা:
NUMBER
১০ এর সমান হওয়া পর্যন্ত লুপ চলবে এবং প্রতি বার ১ করে বাড়ানো হবে। একবার NUMBER
১০ এ পৌঁছালে লুপ বন্ধ হবে।PERFORM TIMES
উদাহরণ:01 VALUE PIC 99 VALUE 1.
PROCEDURE DIVISION.
PERFORM 3 TIMES
DISPLAY 'Value is: ' VALUE
ADD 2 TO VALUE
END-PERFORM.
STOP RUN.
ব্যাখ্যা:
VALUE
৩ বার প্রদর্শিত হবে এবং প্রতি বার VALUE
এর মান ২ করে বাড়ানো হবে।PERFORM UNTIL
: শর্ত অনুযায়ী লুপ চালাতে ব্যবহার করা হয়। শর্তটি পূর্ণ না হওয়া পর্যন্ত লুপ চালাতে থাকে।PERFORM TIMES
: নির্দিষ্ট সংখ্যক বার লুপ চালাতে ব্যবহার করা হয়।এই দুটি কমান্ড লুপিং লজিককে আরও উন্নত এবং নমনীয় করতে সাহায্য করে, যা কোডের কার্যকারিতা বাড়ায়।
Nested loops এবং Iteration techniques প্রোগ্রামিং ভাষায় একটি বা একাধিক লুপের ভিতরে আরেকটি লুপ ব্যবহার করার জন্য ব্যবহৃত হয়। এটি প্রোগ্রামে একাধিক পদক্ষেপ বা কার্যাবলি একে অপরের সাথে সম্পর্কিত হওয়ার জন্য উপকারী হয়। COBOL প্রোগ্রামিং ভাষায় nested loops এবং iteration techniques কোডের কার্যকারিতা এবং পুনরাবৃত্তি (repetition) কাজ সহজ করে তোলে।
Nested loops হল এমন লুপ যেখানে এক লুপের ভিতরে অন্য একটি লুপ থাকে। এতে, বাইরের লুপ একবার রান হওয়ার পর ভিতরের লুপ পুনরায় তার সমস্ত ইটারেশন (iteration) সম্পন্ন করে। এই ধরনের লুপ প্রয়োজনীয় যখন আপনার একাধিক ভিন্ন শর্ত বা সেগমেন্টের উপর একাধিক বার কাজ করতে হয়।
PERFORM VARYING index1 FROM 1 BY 1 UNTIL index1 > 5
PERFORM VARYING index2 FROM 1 BY 1 UNTIL index2 > 3
DISPLAY "index1 = " index1 " , index2 = " index2
END-PERFORM
END-PERFORM
এখানে, বাইরের লুপ index1 এর মান ১ থেকে ৫ পর্যন্ত বাড়াচ্ছে এবং ভিতরের লুপ index2 এর মান ১ থেকে ৩ পর্যন্ত বাড়াচ্ছে। ভিতরের লুপ প্রতিবার বাইরের লুপের এক ইটারেশন সম্পন্ন হওয়ার পরে শুরু হবে। এই ধরনের লুপ ব্যবহার করা হয় যখন বিভিন্ন শর্তের উপর একাধিক বার কাজ করতে হয়।
ধরা যাক, একটি ম্যাট্রিক্সের সব এলিমেন্ট প্রিন্ট করতে চাই:
01 matrix.
05 row OCCURS 5 TIMES.
10 column OCCURS 3 TIMES PIC 9(3).
MOVE 1 TO matrix (1, 1)
MOVE 2 TO matrix (1, 2)
MOVE 3 TO matrix (1, 3)
MOVE 4 TO matrix (2, 1)
MOVE 5 TO matrix (2, 2)
MOVE 6 TO matrix (2, 3)
PERFORM VARYING i FROM 1 BY 1 UNTIL i > 5
PERFORM VARYING j FROM 1 BY 1 UNTIL j > 3
DISPLAY "matrix (" i "," j ") = " matrix (i, j)
END-PERFORM
END-PERFORM
এখানে, ৫টি সারি এবং ৩টি কলামের ম্যাট্রিক্স তৈরি করা হয়েছে এবং প্রতিটি এলিমেন্টকে প্রিন্ট করা হচ্ছে। বাইরের লুপ সারির উপর কাজ করে, এবং ভিতরের লুপ কলামের উপর কাজ করে।
Iteration techniques হল সেই কৌশল যা একটি নির্দিষ্ট কাজ পুনরায় একাধিক বার সম্পাদন করতে ব্যবহৃত হয়। কোডে বার বার একই কাজ করার জন্য loops (যেমন: FOR, WHILE, DO WHILE) ব্যবহার করা হয়। COBOL-এ বিভিন্ন ধরনের iteration techniques ব্যবহার করা যায়, যেমন:
COBOL এ VARYING স্টেটমেন্ট লুপের পরিবর্তনশীল ইনডেক্স চালানোর জন্য ব্যবহৃত হয়। এটি প্রোগ্রামের একটি বা একাধিক মান পরিবর্তন করার জন্য সহায়ক।
PERFORM VARYING index FROM 1 BY 1 UNTIL index > 5
DISPLAY "Index = " index
END-PERFORM
এটি ১ থেকে ৫ পর্যন্ত index এর মান পরিবর্তন করে এবং প্রতি পদক্ষেপে প্রদর্শন করে।
COBOL এ PERFORM স্টেটমেন্ট দিয়ে কোনও একাধিক কাজ পুনরায় চালানো যায়। এটি একটি বিশেষভাবে নির্ধারিত কাজের পুনরাবৃত্তি করার জন্য ব্যবহৃত হয়।
PERFORM TASK-1
PERFORM TASK-2
PERFORM TASK-3
এখানে, TASK-1, TASK-2, এবং TASK-3 নামে তিনটি পৃথক কাজ একে একে সম্পন্ন হবে।
WHILE লুপ ব্যবহৃত হয় যখন শর্ত মেটানো না হওয়া পর্যন্ত কোড চলতে থাকে। COBOL-এ PERFORM UNTIL এর মাধ্যমে একটি WHILE লুপের মতো কাজ করা সম্ভব।
PERFORM UNTIL counter > 5
DISPLAY "Counter = " counter
ADD 1 TO counter
END-PERFORM
এখানে, counter এর মান ৫ এর বেশি না হওয়া পর্যন্ত PERFORM লুপ চলতে থাকবে এবং প্রতি ইটারেশনে counter এর মান বাড়ানো হবে।
Nested Loops এবং Iteration Techniques COBOL প্রোগ্রামিং ভাষায় গুরুত্বপূর্ণ কন্ট্রোল স্ট্রাকচার যা প্রোগ্রামের কার্যকরিতা বৃদ্ধি করে এবং একাধিক শর্তের উপর কাজ করার সুবিধা দেয়। Nested loops বিভিন্ন লুপের মধ্যে একাধিক ইটারেশন সম্পাদন করতে ব্যবহৃত হয়, এবং iteration techniques লুপের মাধ্যমে কোডের পুনরাবৃত্তি সক্ষম করে। এই কৌশলগুলি বড় এবং জটিল প্রোগ্রামে কার্যকারিতা এবং দক্ষতা বাড়ানোর জন্য অপরিহার্য।
Recursion হল একটি প্রোগ্রামিং কৌশল যেখানে একটি ফাংশন বা সাবরুটিন নিজেকে পুনরায় কল করে নির্দিষ্ট শর্তে পৌঁছানো পর্যন্ত। যদিও COBOL একটি পদ্ধতিগত ভাষা এবং সাধারণত পুনরাবৃত্তি (iteration) ব্যবহার করে থাকে, তবে recursion কিছু বিশেষ ক্ষেত্রে ব্যবহার করা যায়। COBOL এ recursion ব্যবহার করার জন্য বিশেষ কিছু কৌশল রয়েছে, যেগুলি মূলত PERFORM এবং CALL স্টেটমেন্টের মাধ্যমে প্রয়োগ করা হয়।
COBOL ভাষায় recursion ব্যবহারের জন্য কোনও সরাসরি ভাষাগত সমর্থন নেই, তবে নির্দিষ্ট লজিকের মাধ্যমে এটি অর্জন করা সম্ভব। সাধারণত PERFORM স্টেটমেন্টের মাধ্যমে নিজেকে পুনরায় কল করা হয়।
একটি সাধারণ উদাহরণ দেয়া হলো যেখানে ফ্যাক্টরিয়াল (Factorial) গণনা করতে recursion ব্যবহার করা হয়েছে।
ফ্যাক্টরিয়াল গণনা করার জন্য Recursion ব্যবহার করা হয়েছে, যেখানে একটি সংখ্যা (N) এর জন্য N! = N * (N-1) * (N-2) * ... * 1
।
IDENTIFICATION DIVISION.
PROGRAM-ID. FactorialRecursion.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 NUM PIC 9(3) VALUE 5.
01 RESULT PIC 9(18) VALUE 1.
PROCEDURE DIVISION.
CALL 'Factorial' USING NUM RESULT.
DISPLAY 'Factorial of ' NUM ' is ' RESULT.
STOP RUN.
FACTORIAL SECTION.
PROCEDURE DIVISION.
FACTORIAL.
IF NUM = 1
EXIT
END-IF
MULTIPLY NUM BY RESULT GIVING RESULT.
SUBTRACT 1 FROM NUM GIVING NUM.
CALL 'Factorial' USING NUM RESULT.
EXIT.
ব্যাখ্যা:
NUM
এবং RESULT
নামক দুইটি ডেটা আইটেম ডিফাইন করা হয়েছে।Factorial
নামে একটি সাবরুটিন কল করা হয়েছে। এখানে ফ্যাক্টরিয়াল গণনা করতে NUM এবং RESULT প্যারামিটার হিসেবে পাঠানো হচ্ছে।FACTORIAL
সাবরুটিন তৈরি করা হয়েছে, যা নিজেকে পুনরায় কল করে কাজটি সম্পন্ন করে।COBOL-এর Recursion বেশ সীমিত এবং এটি কিছু সমস্যা সৃষ্টি করতে পারে:
COBOL এ Recursion সাধারণত PERFORM স্টেটমেন্টের মাধ্যমে iteration এর মতো কাজ করতে পারে, এবং এটি প্রোগ্রামের কার্যকারিতা ও স্ট্যাক ব্যবহারের দিক থেকে আরও নিরাপদ। অনেক সময় recursion এর পরিবর্তে PERFORM UNTIL বা PERFORM VARYING ব্যবহার করে পুনরাবৃত্তি করা হয়।
IDENTIFICATION DIVISION.
PROGRAM-ID. FactorialIteration.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 NUM PIC 9(3) VALUE 5.
01 RESULT PIC 9(18) VALUE 1.
01 I PIC 9(3) VALUE 1.
PROCEDURE DIVISION.
PERFORM VARYING I FROM 1 BY 1 UNTIL I > NUM
MULTIPLY RESULT BY I GIVING RESULT
END-PERFORM.
DISPLAY 'Factorial of ' NUM ' is ' RESULT.
STOP RUN.
ব্যাখ্যা:
COBOL ভাষায় Recursion সাধারণত কিছু নির্দিষ্ট পরিস্থিতিতে এবং PERFORM স্টেটমেন্টের মাধ্যমে প্রয়োগ করা যেতে পারে, তবে এটি খুব বেশি ব্যবহৃত হয় না। COBOL প্রোগ্রামিংয়ে সাধারণত iteration বা looping কৌশলগুলো বেশি কার্যকরী এবং নিরাপদ। Recursion ব্যবহারের ক্ষেত্রে সতর্ক থাকা উচিত, কারণ এটি স্ট্যাক ব্যবহারের সমস্যা এবং পারফরম্যান্সে নেতিবাচক প্রভাব ফেলতে পারে।
common.read_more